The present invention relates to controlling access for users to portions of mass memories such as hard disks, storage arrays, JBODs (Just a Bunch of Disks), RAID storage or future technologies for mass memories. We also use the word storage to refer to mass memories in this invention.
Current technologies provide protection at the file system level and a malicious program or user can get access as a privileged user and read confidential user data or corrupt user data. It requires hardware support to gain complete protection from malicious programs. Prior art technologies allow either full access or one level of hardware controlled restricted access. This level of hardware support is not sufficient to protect all users. It is possible for privileged users to corrupt data unintentionally by installing a malicious program or by manual error during full access.
We refer to the software, firmware and hardware components that control access to mass memories as storage components. The storage components are file systems, volume managers, storage stack, interface drivers, Host Bus Adapters, disk controllers, etc. File systems create a logical view of data in the form of files and directories. Some systems contain volume managers which present logical disks to its upper layer modules such as file systems. The storage stack provides access to physical disks for file systems, volume managers and users who do read or write directly to disks (raw access). Interface drivers control Host Bus Adapters (HBAs) and provide an interface for the storage stack to issue storage commands and transfer data from and to the storage. On systems that do not have a storage stack, file systems interact directly with interface drivers. The Host Bus Adapters are connected to storage array controllers or disk controllers through an interconnect mechanism such as SCSI, SAS, SATA, FC, IDE, etc. A firmware on a disk controller or the disk controller hardware controls operations on the disk in response to commands received from Host Bus Adapters. A firmware on the storage array controller or the storage array controller hardware controls operations on the array in response to commands received from Host Bus Adapters.
There are different methods for access control such as non-privileged users in UNIX or Windows operating systems who cannot access all parts of mass memories (storage). But a malicious program or user can sometimes exploit security weaknesses in an operating system, to get access as a privileged user. This will allow malicious users to gain access to critical data belonging to other users or corrupt users' data.
There is serious risk to users' data when their laptops are stolen or when someone gains access to a user's computer in the user's absence.
There is serious risk to users' data when a privileged user is malicious.
There are many methods for protecting user memories which do not require manual action for enabling and disabling protection; Such protections can be compromised by malicious programs by emulating the required software behavior.
U.S. Pat. No. 6,330,648 illustrates a method of adding protection against malicious programs using a manually controlled hardware with two states. By default the protection is enabled and has a mechanism to manually switch off the protection. This invention will not be able to provide protection for portions of storage belonging to each user, as is possible using our invention. Another drawback of the invention is that the solution cannot be used with mass memories which are already manufactured.
US Patent application 20060117156 illustrates a method of adding protection for non-volatile memories against malicious programs using a manually controlled hardware with two or more states, but only two states used for protection. One state has protection enabled and other state has protection disabled. This invention will not be able to provide protection for portions of storage belonging to each user, as is possible using our invention.
FIG. 1 shows an example of storage components that allow a process in a computer to connect to mass memories such as hard disks, storage arrays, etc. The computer 101 has an internal disk 102. The computer 101 is connected to an external disk 103, a storage array 104 and a JBOD (Just a Bunch Of Disks) 105. The user processes running on the computer interact with File System 106, Volume Manager 107, or the storage stack 108. File systems 106 interact with Volume Managers 107 and Storage Stack 108. The Volume Manager 107 interacts with Storage Stack 108. The storage stack sends disk read or disk write requests to Host Bus Adapter (HBA) through Interface Drivers 109, 110. The Interface Drivers control Host Bus Adapters (HBAs) 111, 112, 113, 114. The HBAs are connected to disk or array controllers through storage interconnects such as SCSI bus, SAS, SATA or FibreChannel network. In this example, HBA#1 111 is connected to Disk Controller 115, HBA#2 112 is connected to Disk Controller 116, HBA#3 113 is connected to Array Controller 117 and HBA#4 114 is connected to Disk Controller 118 in the JBOD 105.
Disk controllers control operations of the disk or disks connected to them. Disk firmware controls operations of disk controllers. Array controllers controls operations of disk controllers in arrays. Array controller firmware control operations of array controllers.
A computer may have one or more file systems. Some computers do not contain volume managers. Some computers may contain one or more volume managers. Some computers do not contain a storage stack.